//
//  NSString+JTExtension.m
//  百思不得姐
//
//  Created by Robin Zhang on 2016/12/29.
//  Copyright © 2016年 BeiJingWangDianJieTong. All rights reserved.
//

#import "NSString+JTExtension.h"

@implementation NSString (JTExtension)

//- (unsigned long long)jt_fileSize {
//    
//    // 总大小
//    unsigned long long size = 0;
//    
//    // 文件管理者
//    NSFileManager *mgr = [NSFileManager defaultManager];
//    
//    // 文件属性
//    NSDictionary *attrs = [mgr attributesOfItemAtPath:self error:nil];
//    // 1.文件夹
//    if ([attrs.fileType isEqualToString:NSFileTypeDirectory]) {
//    
//        // 获得文件夹的大小 == 获得文件夹中所有文件的总大小
//        // Enumerator:遍历器/迭代器
//        NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self];
//        
//        for (NSString *subpath in enumerator) {
//            
//            // 全路径
//            NSString *fullSubpath = [self stringByAppendingPathComponent:subpath];
//            // 累加文件大小
//            size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
//        }
//    }
//    else { // 2.文件
//        
//        size = attrs.fileSize;
//    }
//    
//    return size;
//}

- (unsigned long long)jt_fileSize {
    
    // 总大小
    unsigned long long size = 0;
    
    // 文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    
    // 是否为文件夹
    BOOL isDirectory = NO;
    
    // 路径是否存在
    BOOL exists = [mgr fileExistsAtPath:self isDirectory:&isDirectory];
    if (!exists) return size;
    
    // 1.文件夹
    if (isDirectory) {
        
        // 获得文件夹的大小 == 获得文件夹中所有文件的总大小
        // Enumerator:遍历器/迭代器
        NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:self];
        
        for (NSString *subpath in enumerator) {
            
            // 全路径
            NSString *fullSubpath = [self stringByAppendingPathComponent:subpath];
            // 累加文件大小
            size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
        }
    }
    else { // 2.文件
        
        size = [mgr attributesOfItemAtPath:self error:nil].fileSize;
    }
    
    return size;
}

@end
